﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GeneralLibs;
using Lists;

namespace ListForms._1Clinic
{
    public partial class UcBenhNhanInfo : UserControl
    {
        public UcBenhNhanInfo()
        {
            InitializeComponent();
        }

        public BenhNhan _BenhNhan = null;
        public EditState _EditState = EditState.Undefined;

        private void Uc_Load(object sender, EventArgs e)
        {
            try
            {
                #region cmbBenhNhan
                cmbBenhNhan.DataSource = DanhMucBenhNhan.GetAll().DataView;
                cmbBenhNhan.DisplayColumn = "Ten";
                cmbBenhNhan.ValueColumn = "ID";
                cmbBenhNhan.PopupWidth = 500;
                cmbBenhNhan.AddVisibleColumn("Ma", "Mã", 110, 1);
                cmbBenhNhan.AddVisibleColumn("Ten", "Tên", 130, 2);
                cmbBenhNhan.AddVisibleColumn("DienThoai", "Điện thoại", 110, 3);
                cmbBenhNhan.AddVisibleColumn("SoCMND", "Số CMND", 150, 4);
                #endregion

                #region cmbCoQuan
                cmbCoQuan.DataSource = DanhMucCoQuan.GetAll().DataView;
                cmbCoQuan.DisplayColumn = "Ten";
                cmbCoQuan.ValueColumn = "ID";
                cmbCoQuan.AddVisibleColumn("Ma", "Mã", 100, 1);
                cmbCoQuan.AddVisibleColumn("Ten", "Tên", 320, 2);
                #endregion

                #region cmbrDanToc
                string columnName = "DanToc";
                cmbrDanToc.DataSource = DanhMucBenhNhan.Instance.GetOneColumnValue(columnName).DefaultView;
                cmbrDanToc.DisplayColumn = columnName;
                cmbrDanToc.ValueColumn = columnName;
                cmbrDanToc.AddVisibleColumn(columnName, "Dân tộc");
                #endregion

                #region cmbrNgheNghiep
                columnName = "NgheNghiep";
                cmbrNgheNghiep.DataSource = DanhMucBenhNhan.Instance.GetOneColumnValue(columnName).DefaultView;
                cmbrNgheNghiep.DisplayColumn = columnName;
                cmbrNgheNghiep.ValueColumn = columnName;
                cmbrNgheNghiep.AddVisibleColumn(columnName, "Nghề nghiệp");
                #endregion

                #region cmbrNoiLamViec
                columnName = "NoiLamViec";
                cmbrNoiLamViec.DataSource = DanhMucBenhNhan.Instance.GetOneColumnValue(columnName).DefaultView;
                cmbrNoiLamViec.DisplayColumn = columnName;
                cmbrNoiLamViec.ValueColumn = columnName;
                cmbrNoiLamViec.AddVisibleColumn(columnName, "Nơi làm việc");
                #endregion
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }

        }

        private void dateNgaySinh_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                int nam = int.Parse(CommonLib.GetSystemDateTime().Year.ToString());
                int dtp = int.Parse(dateNgaySinh.DateTime.Year.ToString());
                nmrTuoi.EditValue = (nam - dtp);
            }
            catch (Exception ex)
            {
            }
        }

        public bool CheckFullinfo()
        {
            if (txtMa.Text == "")
            {
                txtMa.Focus();
                throw new CustomException("Chưa điền mã bệnh nhân", ExceptionType.LackOfInputInfo);
            }
            //else if (_EditState == EditState.CreatingNew)
            //{
            //    BenhNhan thongSo = DanhMucBenhNhan.Instance.GetByMa(txtMa.Text.Trim());
            //    if (thongSo != null)
            //    {
            //        txtMa.Focus();
            //        throw new CustomException("Mã bệnh nhân này đã tồn tại trong CSDL");
            //    }
            //}

            if (txtTen.Text == "")
            {
                txtTen.Focus();
                throw new CustomException("Chưa điền tên bệnh nhân", ExceptionType.LackOfInputInfo);
            }
            if (cmbGioiTinh.Text == "")
            {
                cmbGioiTinh.Focus();
                throw new CustomException("Chưa điền giới tính bệnh nhân", ExceptionType.LackOfInputInfo);
            }
            if (nmrTuoi.Text == "")
            {
                nmrTuoi.Focus();
                throw new CustomException("Chưa điền tuổi bệnh nhân", ExceptionType.LackOfInputInfo);
            }
            if (txtDiaChi.Text == "")
            {
                txtDiaChi.Focus();
                throw new CustomException("Chưa điền địa chỉ bệnh nhân", ExceptionType.LackOfInputInfo);
            }
            return true;
        }

        public void SinhSo()
        {
            try
            {
                //Sinh mã bệnh nhân luôn
                string prefix = CommonLib.TaoTienToSoPhieuClinicTheoChuan("BN");
                txtMa.Text = CommonLib.GetSoChungTuMacDinhForClinic("Clinic_BenhNhan", "Ma", prefix);
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }
        }

        private void chk_CheckedChanged(object sender, EventArgs e)
        {
            //nếu check vào tái khám == true --> disable các control điền thông tin
            try
            {
                if (chkBenhNhanCu.Checked)
                {
                    cmbBenhNhan.Enabled = true;

                    txtMa.Properties.ReadOnly = true;
                    txtTen.Properties.ReadOnly = true;
                    txtNguoiThan.Properties.ReadOnly = true;
                    txtSoCMND.Properties.ReadOnly = true;
                    cmbCoQuan.popupList.Properties.ReadOnly = true;
                    txtEmail.Properties.ReadOnly = true;
                    txtDienTHoai.Properties.ReadOnly = true;
                    txtDiaChi.Properties.ReadOnly = true;
                    cmbGioiTinh.Properties.ReadOnly = true;
                    cmbrDanToc.popupList.Properties.ReadOnly = true;
                    cmbrNgheNghiep.popupList.Properties.ReadOnly = true;
                    cmbrNoiLamViec.popupList.Properties.ReadOnly = true;
                    nmrTuoi.Properties.ReadOnly = true;
                    dateNgaySinh.Properties.ReadOnly = true;
                }
                else
                {
                    cmbBenhNhan.Enabled = false;

                    //Sinh số mới Bù vào, nếu là tạo mới
                    if (_EditState == EditState.CreatingNew)
                        SinhSo();

                    txtMa.Properties.ReadOnly = false;
                    txtTen.Properties.ReadOnly = false;
                    txtNguoiThan.Properties.ReadOnly = false;
                    txtSoCMND.Properties.ReadOnly = false;
                    cmbCoQuan.popupList.Properties.ReadOnly = false;
                    txtEmail.Properties.ReadOnly = false;
                    txtDienTHoai.Properties.ReadOnly = false;
                    txtDiaChi.Properties.ReadOnly = false;
                    cmbGioiTinh.Properties.ReadOnly = false;
                    cmbrDanToc.popupList.Properties.ReadOnly = false;
                    cmbrNgheNghiep.popupList.Properties.ReadOnly = false;
                    cmbrNoiLamViec.popupList.Properties.ReadOnly = false;
                    nmrTuoi.Properties.ReadOnly = false;
                    dateNgaySinh.Properties.ReadOnly = false;
                }
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }
        }

        private void cmbBenhNhan_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                if (cmbBenhNhan.EditValue != null && (Guid)cmbBenhNhan.EditValue != Guid.Empty)
                {
                    _BenhNhan = DanhMucBenhNhan.Instance.GetByID((Guid)cmbBenhNhan.EditValue);

                    txtMa.Text = _BenhNhan.Ma;
                    txtTen.Text = _BenhNhan.Ten;
                    cmbGioiTinh.EditValue = _BenhNhan.GioiTinh;
                    cmbrDanToc.EditValue = _BenhNhan.DanToc;
                    dateNgaySinh.EditValue = _BenhNhan.NgaySinh;
                    nmrTuoi.Text = _BenhNhan.Tuoi.ToString();
                    txtDienTHoai.Text = _BenhNhan.DienThoai;
                    cmbCoQuan.EditValue = _BenhNhan.CoQuanID;
                    txtEmail.Text = _BenhNhan.Email;
                    cmbrNgheNghiep.EditValue = _BenhNhan.NgheNghiep;
                    cmbrNoiLamViec.EditValue = _BenhNhan.NoiLamViec;
                    txtNguoiThan.EditValue = _BenhNhan.NguoiThan;
                    txtDiaChi.Text = _BenhNhan.DiaChi;
                    txtSoCMND.Text = _BenhNhan.SoCMND;
                }
                else
                {
                    txtMa.Text = "";
                    txtTen.Text = "";
                    cmbGioiTinh.EditValue = "";
                    cmbrDanToc.EditValue = "";
                    dateNgaySinh.EditValue = "";
                    nmrTuoi.EditValue = null;
                    txtDienTHoai.Text = "";
                    cmbCoQuan.EditValue = null;
                    txtEmail.Text = "";
                    cmbrNgheNghiep.EditValue = null;
                    cmbrNoiLamViec.EditValue = null;
                    txtNguoiThan.EditValue = null;
                    txtDiaChi.Text = "";
                    txtSoCMND.Text = "";
                }
            }
            catch (Exception ex)
            {
                BasicForms.FrmExceptionNotifier.ShowAndLog(ex);
            }
        }
    }
}
